Bar code scanners and wand-based readers ("readers") scan and decode typical bar codes from linear symbologies. "Linear symbologies" are symbologies where data is encoded as parallel arrangements of alternating, multiple-width bars and spaces (e.g., U.P.C., Code 39, Code 93, etc.). Linear symbologies, as well as other symbologies, encode "data characters" (i.e., human-readable characters) as "symbol characters," which are typically alternating bars and spaces. In typical linear symbologies, such as Code 39, each bar and space, or "element," in the symbol is one of four narrow and wide elements: a single-width bar, a single-width space, a double-width bar or a double-width space. More complex linear or stacked symbologies employ a greater number of widths for each element.
Bar code readers typically convert symbol characters to data characters by scanning an area to produce a reflectance signal or bar code "profile" that is generally an analog signal representing the modulated light reflected from areas of high reflectance or "spaces," and absorbed by areas of low reflectance or "bars." As a result, the profile represents the pattern of bars and spaces, or "elements," in the symbol. In a given profile, a peak corresponds to a space (high reflectivity), while a valley corresponds to a bar (low reflectivity, relative to the space). The width of each peak or valley generally indicates the width of the corresponding bar or space whose reflectance produced the peak or valley.
Many bar code readers employ "wave shaping" circuits that essentially square off the profile based on transitions or vertical edges between the peaks and valleys in the profile. Counting circuits then produce a series of counts that indicate the horizontal widths of the bars and spaces from the linear bar code symbol. A typical locating algorithm in the reader locates a bar code symbol by examining the series of counts to attempt to find a quiet zone and an adjacent start/stop symbol character. A "quiet zone" is a clear space, containing no dark marks, that precedes or follows a symbol, often next to a start or stop character. "Start and stop characters" are symbol characters, unique to a given symbology, that indicate the beginning and end of a given symbol, respectively. Typically, a quiet zone has a size that is about ten times greater than bars that precede or follow the quiet zone. Therefore, the reader examines a series of counts and attempts to find a count that is approximately ten times greater than a count which follows thereafter. Once the quiet zone and adjacent start/stop character have been located, standard decode algorithms are employed to decode series of counts from the symbol into data characters.
Wand-type readers contact the surface on which the bar code is printed. Such readers often produce profiles having sharp contrast between the peaks and valleys and thus the spaces and bars represented by the profile are easily detected by circuitry in the reader. Non-contact bar code readers are currently available such as laser scanning and linear charge-coupled device ("CCD") readers. Laser scanning-type readers employ a scanning beam of laser light which impinges on and is reflected from a bar code. A photodetector receives the reflected light and converts it into a modulated electrical signal that comprises the profile for the bar code.
Wand-based readers and laser scanners are often adequate to scan and decode linear symbologies. However, newer data collection symbologies have departed from the typical linear symbologies to create stacked or area symbologies in order to increase "information density," i.e., the amount of information encoded within a given area. "Stacked symbologies," or multi-row symbologies, employ several adjacent rows of multiple-width bars and spaces (e.g., Code 49, PDF417, etc.). "Area symbologies" or two-dimensional matrix symbologies, employ arrangements of regular polygon-shaped data cells where the center-to-center distance of adjacent data cells is uniform (e.g., MaxiCode, Code One, Data Matrix, Aztec Code, etc.).
Such stacked and area symbologies typically require image or vision-based readers that produce two-dimensional images of a field of view. Image or vision-based readers employ two-dimensional semiconductor arrays, vidicons, or other suitable light receiving elements that receive an image of a bar code and, based on the light reflected therefrom, process the image to produce the profile.
All readers produce profiles that contain noise, spurious peaks or valleys resulting from printing defects, symbol wear, etc. If such noise is insignificant enough, then the wave shaping circuits or other circuitry will appropriately square off or process the profile. Some readers employ low pass filters to filter out high frequency noise within the profile. Nevertheless, if the noise is of sufficient intensity, typical readers can simply fail to decode the profile, or incorrectly decode a given symbol.
Additional prior methods of filtering such noise employed statistics to develop a metric M. For example, such prior methods have multiplied several factors, for example, factors F.sub.1 through F.sub.3, for the metric M=F.sub.1 *F.sub.2 *F.sub.3, or a coefficient multiplied by each factor, and the resulting products summed to produce the metric, e.g., M=C.sub.1 F.sub.1 +C.sub.2 F.sub.2 +C.sub.3 F.sub.3. The resulting metric M helped instruct the reader as to how to process a given waveform or portion thereof.
The factors, however, are typically ad hoc and formulated as a probabilistic-like function ranging from zero to one. Such factors typically are optimized to or tuned for a given symbology, or to a particular noise or defect which a symbol may suffer. Additionally, such statistical methods are poor analogies to real world noise and other defects affecting symbols, and often require significant experimenting and quantitative analysis to produce such factors and coefficients. In other words, it is difficult to accurately model the real world symbol decoding process with a single metric produced from a function having one or more contributing factors. The relationship between each factor in the equation is difficult to calibrate, and no priority or ordering of factors are provided.